00001 <?php
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 if ( ! defined("PATH_TO_MESSAGE_NEW") ) define("PATH_TO_MESSAGE_NEW", "messaging_new.php");
00036 require_once (PATH_TO_ROOT."roleplay/classes/class.userrolemanagement.inc.php");
00037 require_once (PATH_TO_ROOT."teams/classes/class.userteammanagement.inc.php");
00038 require_once (PATH_TO_ROOT."teams/classes/class.teamlist.inc.php");
00047 class Buddylist {
00052 private $userID;
00053
00058 private $translate;
00059
00064 private $locale;
00065
00072 function Buddylist($userID) {
00073 $this->userID = $userID;
00074 $this->locale = getLocale();
00075 $this->translate = getTranslate("messaging");
00076 }
00082 public function echoBuddyManagement() {
00083 if (isset($_REQUEST["resultAction"])) {
00084 $buddies = array();
00085 $buddies = $_REQUEST["selectedUser"];
00086 if ($_REQUEST ["resultAction"] == "ignore")
00087 $ignore = 1;
00088 else
00089 $ignore = 0;
00090 echo "<table width='100%' border='0'>";
00091 $count = count($buddies);
00092 for ($i = 0 ; $i < $count ; $i++) {
00093 $this->addBuddy($buddies[$i], $ignore);
00094 }
00095 echo "</table>";
00096 }
00097 if (isset($_POST["buddyAction"])) {
00098 $buddies = isset($_POST["buddySelection"]) ? $_POST["buddySelection"] : array();
00099 $count = count($buddies);
00100 if ($_POST["buddyAction"] == "delete") {
00101 for ($i = 0 ; $i < $count ; $i++) {
00102 $this->deleteBuddy($buddies[$i]);
00103 }
00104 } elseif ($_POST["buddyAction"] == "ignore") {
00105 for ($i = 0 ; $i < $count ; $i++) {
00106
00107 if($this->getBuddyGroup($buddies[$i]) != ADMIN)
00108 $this->setBuddyStatus($buddies[$i], 1);
00109 }
00110 } elseif ($_POST["buddyAction"] == "unignore") {
00111 for ($i = 0 ; $i < $count ; $i++) {
00112 $this->setBuddyStatus($buddies[$i], 0);
00113 }
00114 }
00115 }
00116 $this->echoBuddy();
00117 $this->echoWhereIgnored();
00118 }
00124 public function echoBuddy() {
00125 global $db;
00126 echo " <form id='buddy' method='post' action='".PATH_TO_ROOT.SCRIPT_NAME."'>
00127 <table class='tableBorder' width='100%'>";
00128 Output::echoTableHead ( $this->translate->_("Verwaltete Benutzer") );
00129 $userid = Data::toMysql ( $this->userID );
00130 $mybuddies = $db->get_results("SELECT messaging_buddylist.buddyID, messaging_buddylist.isIgnored, user.Vorname, user.Nachname
00131 FROM messaging_buddylist INNER JOIN user
00132 ON messaging_buddylist.buddyID = user.ID
00133 WHERE messaging_buddylist.userID =".$userid."
00134 ORDER BY messaging_buddylist.isIgnored ASC,user.Nachname ASC");
00135 if ($db->num_rows > 0) {
00136 echo "<tr><td class='tableCellHead'>".$this->translate->_("Eigene Buddies")."</td></tr>";
00137 $darkCell = true;
00138 $newTableCellHead = 0;
00139 foreach($mybuddies as $mybuddy) {
00140 if ($newTableCellHead != $mybuddy->isIgnored) {
00141 echo "<tr><td class='tableCellHead'>".$this->translate->_("Ignorierte Benutzer")."</td></tr>";
00142 }
00143 $darkCell == true ? $class = "tableCellDark" : $class = "tableCell";
00144 if (isset ( $_POST ['markAll'] )) {
00145 echo "<tr><td class='".$class."'><p class='pForm'><input type='checkbox' name='buddySelection[]' checked value='".$mybuddy->buddyID."' /> <a href='".PATH_TO_ROOT."user/homepage.php?user=".$mybuddy->buddyID."'>".Data::toHTML($mybuddy->Nachname.", ".$mybuddy->Vorname, false) ."</a></p></td></tr>";
00146 } else {
00147 echo "<tr><td class='".$class."'><p class='pForm'><input type='checkbox' name='buddySelection[]' value='".$mybuddy->buddyID."' /> <a href='".PATH_TO_ROOT."user/homepage.php?user=".$mybuddy->buddyID."'>".Data::toHTML($mybuddy->Nachname.", ".$mybuddy->Vorname, false) ."</a></p></td></tr>";
00148 }
00149 $darkCell == true ? $darkCell = false : $darkCell = true;
00150 $newTableCellHead = $mybuddy->isIgnored;
00151 }
00152 Output::echoDialogBottom(array("okButton" => "", "cancelButton" => ""), 1, 'none', "<p class='pForm'><input type='submit' name='markAll' value='Alle markieren' /> </p> ");
00153
00154 $combobox = "<p class='pForm'> <select name='buddyAction' size='1'>
00155 <option selected='selected' value='delete'>".$this->translate->_("Loeschen")."</option>
00156 <option value='ignore'>".$this->translate->_("Ignorieren")."</option>
00157 <option value='unignore'>".$this->translate->_("Nicht ignorieren")."</option>
00158 </select> </p>
00159 <p class='pForm'><input type='submit' name='okButton' value='OK' /> </p> ";
00160 Output::echoDialogBottom(array("okButton" => "", "cancelButton" => ""), 1, true, $combobox);
00161 } else {
00162 echo "<tr><td class='tableCellHead'>".$this->translate->_("Keine Buddies eingetragen.")."</td></tr>";
00163 }
00164 echo "</table>";
00165 echo "</form>";
00166 }
00172 public function echoBuddylist() {
00173 $online = array();
00174 $offline = array();
00175 $this->getBuddies($online, $offline);
00176 echo " <form id='newMessage' method='post' action='".PATH_TO_ROOT."messaging/".PATH_TO_MESSAGE_NEW."'>\n
00177 <p class='pForm'><input type='hidden' name='Empfaenger' value=\"".(isset($_POST["Empfaenger"]) ? Data::toHTML($_POST["Empfaenger"]) : "") ."\" /></p>\n
00178 <p class='pForm'><input type='hidden' name='Betreff' value=\"".((isset($_POST["Betreff"])) ? $_POST["Betreff"] : "") ."\" /></p>\n
00179 <p class='pForm'><input type='hidden' name='Nachricht' value=\"".((isset($_POST["Nachricht"])) ? $_POST["Nachricht"] : "") ."\" /></p>\n
00180 <p class='pForm'><input type='hidden' name='asEmail' value=\"".((isset($_POST["asEmail"])) ? $_POST["asEmail"] : "") ."\" /></p>\n
00181 <table class='tableBorder'>\n";
00182 Output::echoTableHead ( Output::getIcon ( "icon_buddy", $this->translate->_("Buddies") ) . $this->translate->_("Buddies") );
00183 $cOnline = count($online);
00184 if ($cOnline) {
00185 echo " <tr><td class='tableCellHead'><strong><span style='color: #00a000;'>".$this->translate->_("Online")."</span></strong></td></tr>";
00186 $darkCell = true;
00187 for ($i = 0 ; $i < $cOnline ; $i++) {
00188 $darkCell == true ? $class = "tableCellDark" : $class = "tableCell";
00189 echo " <tr><td class='".$class."'><p class='pForm'><input type='checkbox' value='".$online[$i][0]."' name='selectedUser[]' onclick='addUserToRecipients(\"".Data::toHTML($online[$i][1].", ".$online[$i][2], false) ."\")' /></p> <a href='".PATH_TO_ROOT."user/homepage.php?user=".$online[$i][0]."'>".Data::toHTML($online[$i][1].", ".$online[$i][2], false) ."</a></td></tr>";
00190 $darkCell == true ? $darkCell = false : $darkCell = true;
00191 }
00192 }
00193 $cOffline = count($offline);
00194 if ($cOffline) {
00195 echo " <tr><td class='tableCellHead'><strong><span style='color: #a00000;'>".$this->translate->_("Offline")."</span></strong></td></tr>";
00196 $darkCell = true;
00197 for ($i = 0 ; $i < $cOffline ; $i++) {
00198 $darkCell == true ? $class = "tableCellDark" : $class = "tableCell";
00199 echo " <tr><td class='".$class."'><p class='pForm'><input type='checkbox' value='".$offline[$i][0]."' name='selectedUser[]' onclick='addUserToRecipients(\"".Data::toHTML($offline[$i][1].", ".$offline[$i][2], false) ."\")' /></p> <a href='".PATH_TO_ROOT."user/homepage.php?user=".$offline[$i][0]."'>".Data::toHTML($offline[$i][1].", ".$offline[$i][2], false) ."</a></td></tr>";
00200 $darkCell == true ? $darkCell = false : $darkCell = true;
00201 }
00202 }
00203 Output::echoDialogBottom ( array ("okButton" => $this->translate->_("Nachricht schreiben"), "cancelButton" => "" ), 1, "none" );
00204 echo " </table>\n
00205 </form>\n";
00206 }
00212 public function echoWhereIgnored() {
00213 global $db;
00214 $userid = Data::toMysql($this->userID);
00215 $whereIgnored = $db->get_results("SELECT user.ID, user.Nachname, user.Vorname
00216 FROM user INNER JOIN messaging_buddylist
00217 ON user.ID = messaging_buddylist.userID
00218 WHERE messaging_buddylist.buddyID=".$userid."
00219 AND messaging_buddylist.isIgnored = 1
00220 ORDER BY user.Nachname");
00221 echo "<table class='tableBorder' width='100%'>";
00222 Output::echoTableHead ($this->translate->_("Bei diesen Personen stehen Sie auf der Ignoreliste") );
00223 if ($db->num_rows > 0) {
00224 $darkCell = true;
00225 foreach($whereIgnored as $whereIgnoredUser) {
00226 $darkCell == true ? $class = "tableCellDark" : $class = "tableCell";
00227 echo "<tr><td class='".$class."'><a href='".PATH_TO_ROOT."user/homepage.php?user=".$whereIgnoredUser->ID."'>".Data::toHTML($whereIgnoredUser->Nachname.", ".$whereIgnoredUser->Vorname, false) ."</a></td></tr>";
00228 $darkCell == true ? $darkCell = false : $darkCell = true;
00229 }
00230 } else {
00231 echo "<tr><td class='tableCellHead'>".$this->translate->_("Kein Eintrag.")."</td></tr>";
00232 }
00233 echo "</table>";
00234 }
00242 private function getBuddies(&$online, &$offline) {
00243 global $db;
00244 $userid = Data::toMysql($this->userID);
00245 $buddies = $db->get_results("SELECT messaging_buddylist.buddyID, user.Vorname, user.Nachname, user.sessionID
00246 FROM messaging_buddylist INNER JOIN user
00247 ON user.ID = messaging_buddylist.buddyID
00248 WHERE messaging_buddylist.userID ='".$userid."' AND messaging_buddylist.isIgnored=0
00249 ORDER BY user.Nachname ASC, user.Vorname ASC");
00250 if ($db->num_rows > 0) {
00251 foreach($buddies as $buddy) {
00252 if (Utilities::userOnline($buddy->sessionID)) {
00253 array_push($online, array($buddy->buddyID, $buddy->Nachname, $buddy->Vorname));
00254 } else {
00255 array_push($offline, array($buddy->buddyID, $buddy->Nachname, $buddy->Vorname));
00256 }
00257 }
00258 }
00259 }
00267 private function addBuddy($buddyID, $ignore = 0) {
00268 global $db;
00269 if ( ! is_numeric($buddyID) ) {
00270 Output::errorMessage ($this->translate->_("Es wurde eine ungueltige Benutzer-ID uebergeben!") );
00271 return false;
00272 }
00273 $buddyID = Data::toMysql( $buddyID );
00274 $userid = Data::toMysql($this->userID);
00275 $ignore = Data::toMysql($ignore);
00276 if ($buddyID == $this->userID) {
00277 Output::errorMessage ( $this->translate->_("Sie koennen sich nicht selbst der Verwaltungsliste hinzufuegen.") );
00278 return false;
00279 }
00280 $user = $db->get_row("SELECT Nachname, Vorname FROM user WHERE ID = '$buddyID'");
00281 $name = $user->Nachname.", ".$user->Vorname;
00282 if ($db->get_var ( "SELECT COUNT(buddyID) FROM messaging_buddylist WHERE buddyID='$buddyID' AND userID =" . $userid ) > 0) {
00283 Output::errorMessage (sprintf($this->translate->_("%1\$s bereits in der Verwaltungsliste enthalten."), $name) );
00284 return false;
00285 }
00286
00287
00288 if ($buddyID > 0 && !($this->getBuddyGroup($buddyID) == ADMIN && $ignore == 1)) {
00289 $db->query("INSERT INTO messaging_buddylist (userID,buddyID,isIgnored)
00290 VALUES ('" . $userid . "','" . $buddyID . "','" . $ignore . "')" );
00291 Output::echoMessage (sprintf($this->translate->_("%1\$s wurde erfolgreich der Verwaltungsliste hinzugefügt."), $name) );
00292 return true;
00293 } else {
00294 Output::errorMessage (sprintf($this->translate->_("%1\$s konnte der Verwaltungsliste nicht hinzugefügt werden."), $name) );
00295 return false;
00296 }
00297 }
00304 private function deleteBuddy($buddyID) {
00305 global $db;
00306 if ($buddyID > 0) {
00307 $userid = Data::toMysql($this->userID);
00308 $buddyID = Data::toMysql($buddyID);
00309 $db->query("DELETE FROM messaging_buddylist WHERE userID='".$userid."' AND buddyID='".$buddyID."'");
00310 }
00311 }
00319 private function setBuddyStatus($buddyID, $status) {
00320 global $db;
00321 if ($buddyID > 0) {
00322 $userid = Data::toMysql($this->userID);
00323 $buddyID = Data::toMysql($buddyID);
00324 $status = Data::toMysql($status);
00325 $db->query("UPDATE messaging_buddylist SET isIgnored='".$status."' WHERE userID='".$userid."' AND buddyID='".$buddyID."'");
00326 }
00327 }
00328
00335 private function getBuddyGroup($buddyID) {
00336 global $db;
00337
00338 if ($buddyID > 0) {
00339 $buddyGroup = $db->get_results("SELECT Usergroup FROM user WHERE ID='" . Data::toMysql($buddyID) . "'");
00340
00341 return $buddyGroup[0]->Usergroup;
00342 }
00343 return NULL;
00344 }
00345 }